javascript 中作用域链和原型链的区别
作用域是针对变量的,比如我们创建了一个函数,函数里面又包含了一个函数,那么现在就有三个作用域
全局作用域==>函数 1 作用域==>函数 2 作用域
作用域的特点就是,先在自己的变量范围中查找,如果找不到,就会沿着作用域往上找。
原型链是针对构造函数的,比如我先创建了一个函数,然后通过一个变量 new 了这个函数,那么这个被 new 出来的函数就会继承创建出来的那个函数的属性,然后如果我访问 new 出来的这个函数的某个属性,但是我并没有在这个 new 出来的函数中定义这个变量,那么它就会往上(向创建出它的函数中)查找,这个查找的过程就叫做原型链。
Object ==> 构造函数 1 ==> 构造函数 2
就和 css 中的继承一样,如果自身没有定义就会继承父元素的样式。